network-bridge: Fix do_ifup in the case of ${bridge} != ${netdev}
authorKeir Fraser <keir.fraser@citrix.com>
Thu, 2 Apr 2009 10:48:10 +0000 (11:48 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Thu, 2 Apr 2009 10:48:10 +0000 (11:48 +0100)
On RHEL5.2, ifup ${bridge} fails if ${bridge} != ${netdev},
because RHEL5.2's ifup ${bridge} runs the following sequence:

1. Search CONFIG that has the same mac address of ${bridge}.=20
   ifcfg-${netdev} is found.
2. Run "ip link set dev ${netdev} up".
   # ${bridge} is expected.
3. Output "Failed to bring up ${netdev}."
   Because ${netdev} does not exist.

Thus, do_ifup() should not use ifup if ${bridge} != ${netdev}.

Signed-off-by: KUWAMURA Shin'ya <kuwa@jp.fujitsu.com>
tools/hotplug/Linux/network-bridge

index 9d7be4e2e5407ed9bc4f626cb2fbae73d4b898e2..091b8beb3e917edf92e1ece6a42d7d5684d65e9a 100644 (file)
@@ -106,7 +106,7 @@ get_ip_info() {
 }
     
 do_ifup() {
-    if ! ifup $1 ; then
+    if [ $1 != "${netdev}" ] || ! ifup $1 ; then
         if [ -n "$addr_pfx" ] ; then
             # use the info from get_ip_info()
             ip addr flush $1
@@ -223,9 +223,9 @@ op_start () {
 
     preiftransfer ${netdev}
     transfer_addrs ${netdev} ${tdev}
+    # Remember the IP details for do_ifup.
+    get_ip_info ${netdev}
     if ! ifdown ${netdev}; then
-       # If ifdown fails, remember the IP details.
-       get_ip_info ${netdev}
        ip link set ${netdev} down
        ip addr flush ${netdev}
     fi